package model

import "go.mongodb.org/mongo-driver/bson/primitive"

type BimResult struct {
	Code    string
	Message string
	Data    interface{}
}

// NotSuccess 判断请求是否成功
func (r *BimResult) NotSuccess() bool {
	return r.Code != "success"
}

// BimModel bim 的模型信息
type BimModel struct {
	TenantModel `json:",inline" bson:",inline"`

	ID primitive.ObjectID `json:"id" bson:"id"`

	// Name 模型名称，不带后缀
	Name string `json:"name" bson:"name"`

	// FileName 模型名称，带后缀
	FileName string `json:"fileName" bson:"fileName"`

	// Type 文件的类型，即后缀名
	Type string `json:"type" bson:"type"`

	// FileType 文件的传输类型
	FileType string `json:"fileType" bson:"fileType"`

	// FileSize 文件大小，单位：字节
	FileSize int64 `json:"fileSize" bson:"fileSize"`

	// Thumbnail 缩略图
	Thumbnail []string `json:"thumbnail" bson:"thumbnail"`

	// FileId bimface 的 fileId
	FileId string `json:"fileId" bson:"fileId"`

	// 文件转换状态
	TranslateStatus string `json:"translateStatus" bson:"translateStatus"`

	// 不清楚什么用
	DatabagId string `json:"databagId" bson:"databagId"`
}

func (b *BimModel) GetId() string {
	return b.ID.Hex()
}

func (b *BimModel) SetId(id primitive.ObjectID) {
	b.ID = id
}

func (b *BimModel) IsStatusSuccess() bool {
	return b.TranslateStatus == "success"
}

func (b *BimModel) IsStatusProcessing() bool {
	return b.TranslateStatus == "processing"
}

// BimTranslateModel bim file translate vo
type BimTranslateModel struct {

	// Callback Callback地址，待转换完毕以后，BIMFace会回调该地址
	Callback string `json:"callback,omitempty"`

	// Config 转换引擎自定义参数，config参数跟转换引擎相关，不同的
	// 转换引擎支持不同的config格式。例如转换时添加内置材质，则添加
	// 参数值{"texture":true}，添加外部材质时参考“使用模型外置材质
	// 场景”请求报文
	Config map[string]string `json:"config,omitempty"`

	// Source
	Source BimTranslateModelSource `json:"source"`

}

type BimTranslateModelSource struct {

	// FileId 文件Id，即调用上传文件API返回的fileId
	FileId string `json:"fileId" validate:"required"`

	// Compressed 是否为压缩文件，默认为false
	Compressed bool `json:"compressed"`

	// RootName 如果是压缩文件，必须指定压缩包中哪一个是主文件
	RootName string `json:"rootName,omitempty" validate:"required_if=Compressed true,omitempty"`

}
